using Godot;
using System;
using Smr.基类;

public partial class 宠物玩法弹窗 : 玩法弹窗继承
{
    [Export] private 组件道具选项垂直容器 道具选项容器;
    [Export] private 宠物属性 宠物属性实例;
    [Export] private 宠物加点 宠物加点实例;

    private 组件道具 选中组件 = null;

    public override void _Ready()
    {
        base._Ready();

        宠物属性实例.信号宠物参战状态被改变 += 置宠物参战状态;

        选项卡.TabChanged += 选项索引 => { 置选项面板数据((int)选项索引); };

        foreach (var 宠物 in 游戏存档.宠物)
        {
            置选项组件属性(宠物);
        }
    }

    private void 置选项组件属性(C宠物模型 宠物)
    {
        组件道具选项 道具选项实例 = 道具选项容器.创建选项实例();
        道具选项实例.道具组件.置宠物(宠物);
        道具选项实例.标识一标签.Text = 宠物.基础属性.名称;
        道具选项实例.标识二标签.Text = $"({宠物.类型})";
        道具选项实例.标识三标签.Text = 宠物.是否参战 ? "参战" : "";
        道具选项实例.信号被点击 += 道具组件 =>
        {
            选中组件 = 道具组件;
            置选项面板数据(选项卡.CurrentTab);
        };
    }

    private void 置选项面板数据(int 选项索引)
    {
        if (选中组件 == null)
        {
            return;
        }
        switch (选项索引)
        {
            case 0:
                宠物属性实例.置面板数据(选中组件.取宠物());
                break;
            case 1:
                宠物加点实例.置面板数据(选中组件.取宠物());
                break;
            default:
                break;
        }
    }

    private void 置宠物参战状态(string UUID, bool 是否参战)
    {
        var 道具选项组 = 道具选项容器.取选项列表();
        for (int i = 0; i < 道具选项组.Count; i++)
        {
            if (道具选项组[i].道具组件.取宠物().UUID == UUID)
            {
                道具选项组[i].标识三标签.Text = 是否参战 ? "参战" : "";
                return;
            }
        }
    }
}
